package com.coderman.utils.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author fanchunshuai
 * @Date 2019/10/11 15
 * @Description:
 */
public class DateUtils {
    /**
     * date类型进行格式化输出（返回类型：String）
     * @param date
     * @return
     */
    public static String dateFormat(Date date) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(date);
        return dateString;
    }


    /**
     * date类型进行格式化输出（返回类型：String）
     * @param date
     * @return
     */
    public static String dateFormat(Date date,String formatForm) {
        SimpleDateFormat formatter = new SimpleDateFormat(formatForm);
        String dateString = formatter.format(date);
        return dateString;
    }

    /**
     * 将"2015-08-31 21:08:06"型字符串转化为Date
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date StringToDate(String str) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = formatter.parse(str);
        return date;
    }

    /**
     * 将"2015-08-31 21:08:06"型字符串转化为Date
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date StringToDate(String str,String formatForm) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat(formatForm);
        Date date = formatter.parse(str);
        return date;
    }


    /**
     * 将当前时间戳转化为Date
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date LongToDate(long str) throws ParseException{
        return new Date(str);
    }

    /**
     * 将当前时间戳转化为Date，然后转换为yyyy-MM-dd等格式
     * @param str
     * @return
     * @throws ParseException
     */
    public static String  LongToDateStr(long str,String formatForm) throws ParseException{
        return dateFormat(new Date(str),formatForm);
    }

    /**
     * 两个时间之间的天数
     * @param date1
     * @param date2
     * @return
     */
    public static long getDays(String date1, String date2) {
        if (date1 == null || date1.equals("")) {
            return 0;
        }
        if (date2 == null || date2.equals("")) {
            return 0;
        }
        // 转换为标准时间
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date date = null;
        java.util.Date mydate = null;
        try {
            date = myFormatter.parse(date1);
            mydate = myFormatter.parse(date2);
        } catch (Exception e) {
        }
        long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
        return day;
    }




}
